[TDR Generic表] [MySQL协议兼容接口] TTL

1. 属性说明

TTL是Time To Live的缩写,用于表示记录多久之后过期,过期的记录将无法再访问到,会被系统异步删除。TTL是TcaplusDB的内置字段,用__ttl__表示,单位为毫秒,是相对时间。

记录的__ttl__字段的默认值为0,表示记录永不过期;如果将记录的__ttl__字段设置为1000,则表示该记录在1000毫秒后过期。

2. 准备工作

参见准备工作文档,完成mysql_table表的创建,并使用MySQL Client成功连接到TcaplusDB。

3. 限制说明

  1. 对于设置了TTL的记录,如果是index查询,并且只需要返回key字段(即不需要返回value字段),此时不会检查该记录是否过期,即有可能会返回已经过期的记录的key字段。

  2. 如果记录之前没有设置过TTL,则__ttl__ = __ttl__ + x等价于__ttl__ = x__ttl__ = __ttl__ - x (x > 0)等价于使记录立即过期;如果记录之前已经设置过TTL,且在当前请求执行时记录__ttl__字段的值为a,则__ttl__ = __ttl__ - b (a < b)等价于使记录立即过期。

4. 示例SQL

  1. 在向mysql_table表中插入记录的同时设置TTL为10秒钟,SQL语句有以下2种形式:

    INSERT INTO mysql_table (k1, k2, k3, v1, v2, v3, v4, __ttl__) VALUES (1, 2, 'one', 4, 5, 6.6, 'value4', 10000);
    INSERT INTO mysql_table (k1, k2, k3, v1, v2, v3, v4, __ttl__) VALUES (1, 2, 'one', 4, 5, 6.6, 'value4', 10000) ON DUPLICATE KEY UPDATE;
    
  2. 在查询mysql_table表中记录内容的同时查询TTL,SQL语句的形式如下:

    SELECT k1, v1, __ttl__ FROM mysql_table WHERE k1=1 AND k2=2 AND k3='one';
    
  3. 在更新mysql_table表中记录内容的同时更新TTL,SQL语句的形式如下:

    UPDATE mysql_table SET v1=v1+1, v2=v2-2, __ttl__=__ttl__+10000 WHERE k1=1 AND k2=2 AND k3='one';
    

5. 常见问题

详见错误码含义和处理方法

6. 其它参考文档

[TDR Generic表][C++ SDK]设置记录过期淘汰TTL接口说明

[TDR Generic表][Go SDK]设置记录过期淘汰TTL接口说明

[TDR Generic表][C++ SDK]查询记录过期淘汰TTL接口说明

[TDR Generic表][Go SDK]查询记录过期淘汰TTL接口说明

results matching ""

    No results matching ""